package com.qunar.im.ui.util;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.qunar.im.ui.util.easyphoto.easyphotos.engine.ImageEngine;
import com.qunar.im.ui.view.bigimageview.glide.ImageLoader;

import java.io.File;

public class ImageSelectGlideEngine implements ImageEngine {
    //单例
    private static ImageSelectGlideEngine instance = null;

    //单例模式，私有构造方法
    private ImageSelectGlideEngine() {
    }

    //获取单例
    public static ImageSelectGlideEngine getInstance() {
        if (null == instance) {
            synchronized (ImageSelectGlideEngine.class) {
                if (null == instance) {
                    instance = new ImageSelectGlideEngine();
                }
            }
        }
        return instance;
    }

    /**
     * 加载图片到ImageView
     *
     * @param context   上下文
     * @param photoPath 图片路径
     * @param imageView 加载到的ImageView
     */
    @Override
    public void loadPhoto(Context context, String photoPath, ImageView imageView) {
        Glide.with(context).load(photoPath).into(imageView);
    }

    /**
     * 加载gif动图图片到ImageView，gif动图不动
     *
     * @param context   上下文
     * @param gifPath   gif动图路径
     * @param imageView 加载到的ImageView
     *                  <p>
     *                  备注：不支持动图显示的情况下可以不写
     */
    @Override
    public void loadGifAsBitmap(Context context, String gifPath, ImageView imageView) {
        Glide.with(context).load(gifPath).into(imageView);
    }

    /**
     * 加载gif动图到ImageView，gif动图动
     *
     * @param context   上下文
     * @param gifPath   gif动图路径
     * @param imageView 加载动图的ImageView
     *                  <p>
     *                  备注：不支持动图显示的情况下可以不写
     */
    @Override
    public void loadGif(Context context, String gifPath, ImageView imageView) {
        Glide.with(context).load(gifPath).asGif().into(imageView);
    }


    /**
     * 获取图片加载框架中的缓存Bitmap
     *
     * @param context 上下文
     * @param path    图片路径
     * @param width   图片宽度
     * @param height  图片高度
     * @return Bitmap
     * @throws Exception 异常直接抛出，EasyPhotos内部处理
     */
    @Override
    public Bitmap getCacheBitmap(Context context, String path, int width, int height) throws Exception {
        File file = ImageLoader.getGlideCacheFile(context, path);
        return BitmapFactory.decodeFile(file.getAbsolutePath());
//        return Glide.with(context).load(path).asBitmap().override(width, height).get();

    }


}